You're reading an pre-release version of this documentation.
For the latest stable release version, please have a look at master.

Out of Range Constant

Introduction

SpinalHDL checks that in comparisons with literals the literal is not wider than the value compared to.

Example

For example the following code:

val value = in UInt(2 bits)
val result = out(value < 42)

Will result in the following error:

OUT OF RANGE CONSTANT. Operator UInt < UInt
- Left  operand : (toplevel/value : in UInt[2 bits])
- Right operand : (U"101010" 6 bits)
 is checking a value against a out of range constant

Specifying exceptions

In some cases, because of the design parametrization, it can make sense to compare a value to a larger constant and get a statically known True/False result.

You have the option to specifically whitelist one instance of a comparison with an out of range constant.

val value = in UInt(2 bits)
val result = out((value < 42).allowOutOfRangeLiterals)

Alternatively, you can allow comparisons to out of range constants for the whole design.

SpinalConfig(allowOutOfRangeLiterals = true)